#ifndef PARSING_OPG_H
#define PARSING_OPG_H
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
//非终结符
typedef struct noterminal
{
	char ch;
	char* FirstVt; //对应firstvt集
	char* Lastvt; //对应lastvt集
	char* guize[10]; //对应产生式
	int size; //产生式个数
	struct noterminal* next;
}noterminal;

//终结符
typedef struct terminal
{
	int number;
	char ch;
	char* patable; //优先关系表
	struct terminal* next;
}terminal;

typedef struct Parsing_OPG{
    //头指针
    noterminal* h_noter;
    terminal* h_ter;
    char *rulefile;
    /*
    时间：2025.04.16
    作者：zdw
    函数名：to_parsing
    作用：输出分析结果
    参数说明：self操作对象，st分析字符串
    */ 
   void (*to_parsing)(void *self,char*st);
}Parsing_OPG;
/*
时间：2025.04.16
作者：zdw
函数名：parsing_opg
作用：初始实例
参数说明：rulefile规则文件路径
*/
Parsing_OPG *parsing_opg(char*rulefile);
#endif